Everything about Stored Procedure totally explained
A
stored procedure is a
subroutine available to applications accessing a
relational database system. Stored procedures (sometimes called a
sproc or
SP) are actually stored in the
database data dictionary.
Typical uses for stored procedures include
data validation (integrated into the database) or
access control mechanisms. Furthermore, stored procedures are used to consolidate and centralize logic that was originally implemented in applications. Large or complex processing that might require the execution of several
SQL statements is moved into stored procedures and all applications call the procedures only.
Stored procedures are similar to
user-defined functions (UDFs). The major difference is that UDFs can be used like any other expression within SQL statements, whereas stored procedures must be invoked using the
CALL statement
CALL procedure(…)
Stored procedures can return
result sets, for example the results of a
SELECT statement. Such result sets can be processed using
cursors by other stored procedures by associating a result set locator, or by applications. Stored procedures may also contain declared variables for processing data and cursors that allow it to loop through multiple rows in a table. The standard Structured Query Language provides
IF,
WHILE,
LOOP,
REPEAT,
CASE statements, and more. Stored procedures can receive variables, return results or modify variables and return them, depending on how and where the variable is declared.
Implementation
The exact and correct implementation of stored procedure varies from one database system to another. Most major database vendors support them in some form. Depending on the database system, stored procedures can be implemented in a variety of
programming languages, for example
SQL,
Java,
C, or
C++. Stored procedures written in non-SQL programming languages may or may not execute SQL statements themselves.
The increasing adoption of stored procedures led to the introduction of procedural elements to the SQL language in the and standards in the part SQL/PSM. That made SQL an
imperative programming language. Most database systems offer proprietary and vendor-specific extensions, exceeding SQL/PSM. For example,
Microsoft SQL Server allows for stored procedures to be written using
Transact-SQL;
Oracle calls its dialect
PL/SQL,
DB2 uses SQL/PL,
PostgreSQL provides
PL/pgSQL and also allows users to define their own function languages such as pl/perl or pl/php, and
MySQL supports their own stored procedures that try to adhere closely to the standard
Example1.
ed ex1.sql
create or replace procedure myproc(a in number,b in number)as
add number;
begin
add:=a+b;
dbms_output.put_line('The sum is'||add);
end;
/
Calling the procedure:
ed ex2.sql
declare
x number:=&a;
y number:=&b;
begin
myproc(x,y);
end;
/
Now run the proc1 and then run the proc2 like
@proc1.sql
after executing the proc1 myproc will be created.
@proc2.sql
you will get the result.
Features
Pre-compilation of SQL statements
SQL statements implemented as stored procedures in some cases run
faster, as they can be pre-compiled. Execution plans for compiled statements can be stored in the database, together with the procedure. This can remove the compilation overhead that's typically required in situations where software applications send inline SQL queries to a database. However, most database systems implement statement caches to avoid repetitive compilation of dynamic SQL statements.
In addition, pre-compiled SQL statements, while avoiding some overhead, add to the complexity of creating an optimal execution plan because not all arguments of the SQL statement are supplied at compile time. Depending on the specific database implementation and configuration, mixed performance results will be seen from stored procedures versus generic queries or user defined functions .
Execution on a database server
Stored procedures can run directly within the database engine. In a production system, this typically means that the procedures run entirely on a specialized database server, which has direct access to the data being accessed. The benefit here's that network communication costs can be avoided completely. This becomes particularly important for complex series of SQL statements.
However, note that unnecessary or excessive procedural statement execution in the database server (typically a singular shared resource) may impair overall enterprise system performance - for example, while application servers can often be dramatically scaled horizontally for increased processing capacity, the same isn't generally or as easily accomplished for database servers.
Therefore, a growing school of thought advocates the database be used for what it's best at - for example, a very efficient file cabinet. Thereby restricting any database-local procedural executions to only very specific cases rather than the old school ubiquity - instead advocating the use of advanced object oriented domain class ontologies and reusable parameterized SQL generation.
Simplification of data management
Stored procedures allow for
business logic to be embedded as an API in the database, which can simplify data management and reduce the need to encode the logic elsewhere in client programs. This may result in a lesser likelihood of data becoming corrupted through the use of faulty client programs. Thus, the database system can ensure data integrity and consistency with the help of stored procedures.
Some critics claim that databases should be for storing data only, and that business logic should only be implemented by writing a
business layer of code, through which client applications should access the data. However, the use of stored procedures doesn't preclude the use of a
business layer.
Security
Other uses
In some systems, stored procedures can be used to control transaction management; in others, stored procedures run inside a transaction such that transactions are effectively transparent to them. Stored procedures can also be invoked from a
database trigger or a condition handler. For example, a stored procedure may be triggered by an insert on a specific table, or update of a specific field in a table, and the code inside the stored procedure would be executed. Writing stored procedures as condition handlers also allow DBAs to track errors in the system with greater detail by using stored procedures to catch the errors and record some audit information in the database or an external resource like a file.
Further Information
Get more info on 'Stored Procedure'.
|
External Link Exchanges
Do you know how hard it is to get a link from a large encyclopaedia? Well we're different and will prove it. To get a link from us just add the following HTML to your site on a relevant page:
<a href="http://stored_procedure.totallyexplained.com">Stored procedure Totally Explained</a>
Then simply click through this link from your web page. Our crawlers will verify your link, extract the title of your web page and instantly add a link back to it. If you like you can remove the words Totally Explained and embed the link in article text.
As long as your link remains in place, we'll keep our link to you right here. Please play fair - our crawlers are watching. Your site must be closely related to this one's topic. Any kind of spamming, dubious practises or removing the link will result in your link from us being dropped and, potentially, your whole site being banned. |